using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;

namespace AiPlatformAdmin.Api.DTOs;

public class AgentDto
{
    public int Id { get; set; }
    public string Name { get; set; } = string.Empty;
    public string? Category { get; set; }
    public string? Icon { get; set; }
    public string SystemMetaPrompt { get; set; } = string.Empty;
    public string? WelcomeMessage { get; set; }
    public string? PredefinedPrompts { get; set; }
    public string ModelVersion { get; set; } = string.Empty;
    public bool IsPublic { get; set; }
    public DateTime CreatedAt { get; set; }
    public DateTime UpdatedAt { get; set; }
    public int TenantId { get; set; }
    
    public List<int> AdminUserIds { get; set; } = new List<int>();
    public List<int> TeamAccessIds { get; set; } = new List<int>();
    public List<int> KnowledgeBaseIds { get; set; } = new List<int>();
    public List<int> PluginIds { get; set; } = new List<int>();
}

public class CreateAgentDto
{
    [Required]
    [MaxLength(200)]
    public string Name { get; set; } = string.Empty;

    [MaxLength(100)]
    public string? Category { get; set; }

    [MaxLength(100)]
    public string? Icon { get; set; }

    [Required]
    public string SystemMetaPrompt { get; set; } = string.Empty;

    [MaxLength(1000)]
    public string? WelcomeMessage { get; set; }

    public string? PredefinedPrompts { get; set; }

    [Required]
    [MaxLength(100)]
    public string ModelVersion { get; set; } = string.Empty;

    public bool IsPublic { get; set; } = false;

    public List<int>? AdminUserIds { get; set; }
    public List<int>? TeamAccessIds { get; set; }
    public List<int>? KnowledgeBaseIds { get; set; }
    public List<int>? PluginIds { get; set; }
}

public class UpdateAgentDto
{
    [MaxLength(200)]
    public string? Name { get; set; }

    [MaxLength(100)]
    public string? Category { get; set; }

    [MaxLength(100)]
    public string? Icon { get; set; }

    public string? SystemMetaPrompt { get; set; }

    [MaxLength(1000)]
    public string? WelcomeMessage { get; set; }

    public string? PredefinedPrompts { get; set; }

    [MaxLength(100)]
    public string? ModelVersion { get; set; }

    public bool? IsPublic { get; set; }

    public List<int>? AdminUserIds { get; set; }
    public List<int>? TeamAccessIds { get; set; }
    public List<int>? KnowledgeBaseIds { get; set; }
    public List<int>? PluginIds { get; set; }
}

